package com.molichuxing.services.infrastructure.dao;

import com.molichuxing.framework.dao.RootMapper;
import com.molichuxing.services.infrastructure.bean.EnterpriseCarBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface EnterpriseCarMapper extends RootMapper<EnterpriseCarBean> {

    /**
     * 根据订单号获取企业订单车辆信息
     *
     * @param orderCode 订单号
     * @param carState  企业订单车辆状态
     * @return
     */
    List<EnterpriseCarBean> getByOrderCode(@Param("orderCode") Long orderCode, @Param("carState") Integer carState);

    /**
     * 根据订单号和车辆id查询信息
     *
     * @param orderCode 订单号
     * @param carId     车辆id
     * @return
     */
    EnterpriseCarBean getByOrderCodeAndCarId(@Param("orderCode") Long orderCode, @Param("carId") Integer carId);

    /**
     * 批量新增订单车辆信息
     *
     * @param createBeanList beanList
     * @return
     */
    int createBatch(@Param("beanList") List<EnterpriseCarBean> createBeanList);

    /**
     * 根据订单号批量修改订单车辆状态
     *
     * @param orderCode 订单号
     * @param oldState  旧状态
     * @param newState  新状态
     * @return
     */
    int modifyState(@Param("orderCode") Long orderCode, @Param("oldState") int oldState,
                    @Param("newState") int newState);

    /**
     * 订单车辆交接修改（交车、退租、过户、续租）
     *
     * @param modifyBean bean
     * @param oldState   旧状态
     * @return
     */
    int modifyHandover(@Param("bean") EnterpriseCarBean modifyBean, @Param("oldState") int oldState);


    List<EnterpriseCarBean> listEnterpriseCar(@Param("orderCodeList") List<Long> orderCodeList);

    /**
     * 车辆是否锁定
     *
     * @param carId     车辆id
     * @param stateList 状态list
     * @return
     */
    int getCarIsLock(@Param("carId") Integer carId, @Param("stateList") List<Integer> stateList);

    long getPageCount(@Param("params") Map<String, Object> params);

    List<EnterpriseCarBean> getPage(@Param("params") Map<String, Object> params,@Param("pageNum") int pageNum,@Param("pageSize") int pageSize);

    /**
     * 根据车辆ID获取订单车辆
     * @param carId
     * @return
     */
    List<EnterpriseCarBean> getListByCarId(@Param("carId") Integer carId);
}